package com.xuelang.pipeline.artifact.app.nexus3v1.enums;

import java.util.Arrays;

/**
 * @author xiwen.zxg
 * @since 2024/7/18
 */
public enum NexusWebhookEnum {
    ;
    public enum EventTypeEnum {
        /**
         * 仓库中制品组件事件。
         */
        RM_REPOSITORY_COMPONENT("rm:repository:component"),

        /**
         * 仓库中制品组件下资产事件。
         */
        RM_REPOSITORY_ASSET("rm:repository:asset");

        /**
         * 枚举值
         */
        private String value;
        private EventTypeEnum(String value) {
            this.value = value;
        }

        /**
         * 根据枚举值获取枚举类
         */
        public static com.xuelang.pipeline.artifact.app.nexus3v1.enums.NexusWebhookEnum.EventTypeEnum getByValue(String value) {
            return Arrays.stream(com.xuelang.pipeline.artifact.app.nexus3v1.enums.NexusWebhookEnum.EventTypeEnum.values())
                    .filter(e -> e.value.equals(value))
                    .findFirst()
                    .orElse(null);
        }

    }

    public enum EventActionEnum {
        /**
         * 表示从仓库中创建构件的操作。
         */
        CREATED,

        /**
         * 表示从仓库中更新构件的操作。
         */
        UPDATED,

        /**
         * 表示将构件删除到仓库的操作。
         */
        DELETED,

        /**
         * 表示将构件清除到仓库的操作。
         */
        PURGED;

        /**
         * 根据名称获取枚举类
         */
        public static com.xuelang.pipeline.artifact.app.nexus3v1.enums.NexusWebhookEnum.EventActionEnum getByName(String name) {
            return Arrays.stream(com.xuelang.pipeline.artifact.app.nexus3v1.enums.NexusWebhookEnum.EventActionEnum.values())
                    .filter(e -> e.name().equals(name))
                    .findFirst()
                    .orElse(null);
        }
    }
}
